package com.yanggu.bigdata.realtime.utils

import redis.clients.jedis.JedisPool

/**
 * Redis工具类
 */
object RedisUtil {

  /**
   * 使用懒加载的方式加载JedisPool
   */
  private lazy val jedisPool: JedisPool = {
    import redis.clients.jedis.{JedisPool, JedisPoolConfig}
    val jedisPoolConfig = new JedisPoolConfig
    //最大可用连接数
    jedisPoolConfig.setMaxTotal(100)
    //连接耗尽是否等待
    jedisPoolConfig.setBlockWhenExhausted(true)
    //等待时间
    jedisPoolConfig.setMaxWaitMillis(2000)
    //最大闲置连接数
    jedisPoolConfig.setMaxIdle(5)
    //最小闲置连接数
    jedisPoolConfig.setMinIdle(5)
    //取连接的时候进行一下测试 ping
    jedisPoolConfig.setTestOnBorrow(true)
    val jedisPool = new JedisPool(jedisPoolConfig, "localhost", 6379, 1000)
    System.out.println(s"开辟jedis连接池, 连接池配置: $jedisPoolConfig")
    jedisPool
  }

  /**
   * 获取jedis链接
   *
   * @return
   */
  def getJedis = {
    jedisPool.getResource
  }

  /**
   * 根据key删除redis中的数据
   *
   * @param key
   * @return
   */
  def deleteByKey(key: String) = {
    val jedis = jedisPool.getResource
    try {
      jedis.del(key)
    } finally {
      jedis.close()
    }
  }

}
